package {{package}};

import {{invokerPackage}}.CollectionFormats.*;

import retrofit.Callback;
import retrofit.http.*;
import retrofit.mime.*;

{{#imports}}import {{import}};
{{/imports}}
{{^fullJavaUtil}}
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
{{/fullJavaUtil}}

{{#operations}}
public interface {{classname}} {
  {{#operation}}
  {{#contents}}
  /**
   * {{summary}}
   * Sync method
   * {{notes}}
{{#parameters}}
   * @param {{paramName}} {{description}}{{#required}} (required){{/required}}{{^required}} (optional{{#defaultValue}}, default to {{{.}}}{{/defaultValue}}){{/required}}
{{/parameters}}
{{#returnType}}
   * @return {{returnType}}
{{/returnType}}
{{#externalDocs}}
   * {{description}}
   * @see <a href="{{url}}">{{summary}} Documentation</a>
{{/externalDocs}}
   */
  {{#formParams}}
  {{#@first}}
  {{#is ../this 'multipart'}}
  @retrofit.http.Multipart
  {{/is}}
  {{#isNot ../this 'multipart'}}
  @retrofit.http.FormUrlEncoded
  {{/isNot}}
  {{/@first}}
  {{/formParams}}
  @{{httpMethod}}("{{{path}}}")
  {{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Object{{/returnType}} {{operationId}}({{^parameters}});{{/parameters}}
    {{#parameters}}{{>libraries/retrofit/queryParams}}{{>libraries/retrofit/pathParams}}{{>libraries/retrofit/headerParams}}{{>libraries/retrofit/bodyParams}}{{>libraries/retrofit/formParams}}{{>libraries/retrofit/cookieParams}}{{#has this 'more'}}, {{/has}}{{#hasNot this 'more'}}
  );{{/hasNot}}{{/parameters}}

  /**
   * {{summary}}
   * Async method
{{#parameters}}
   * @param {{paramName}} {{description}}{{#required}} (required){{/required}}{{^required}} (optional{{#defaultValue}}, default to {{{.}}}{{/defaultValue}}){{/required}}
{{/parameters}}
   * @param cb callback method
{{#externalDocs}}
   * {{description}}
   * @see <a href="{{url}}">{{summary}} Documentation</a>
{{/externalDocs}}
   */
  {{#formParams}}
  {{#@first}}
  {{#is ../this 'multipart'}}
  @retrofit.http.Multipart
  {{/is}}
  {{#isNot ../this 'multipart'}}
  @retrofit.http.FormUrlEncoded
  {{/isNot}}
  {{/@first}}
  {{/formParams}}
  @{{httpMethod}}("{{{path}}}")
  void {{operationId}}(
    {{#parameters}}{{>libraries/retrofit/queryParams}}{{>libraries/retrofit/pathParams}}{{>libraries/retrofit/headerParams}}{{>libraries/retrofit/bodyParams}}{{>libraries/retrofit/formParams}}{{>libraries/retrofit/cookieParams}}, {{/parameters}}Callback<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Object{{/returnType}}> cb
  );
  {{/contents}}
  {{/operation}}
}
{{/operations}}
